home *** CD-ROM | disk | FTP | other *** search
/ 8bitfiles.net/archives / archives.tar / archives / compuserve-file-archive / 05 Programming / ULTDIRSC.SDA / EQUATES & SETUP next >
Text File  |  2019-04-13  |  10KB  |  281 lines

  1.  ;THE COMPLETE SOURCE FOR ╒╠╘─╔╥2 CONSISTS OF TWO PARTS
  2.  ; PART ONE: EQUATES & PREP
  3.  ; PART TWO: MAIN.CODE
  4.  ; 
  5.  ; THIS IS PART ONE
  6.  ;
  7.  ;-------------------------------------------------------------------------
  8.  ; USING THE ╒╠╘─╔╥2 PROGRAM
  9.  ; 
  10.  ; THE PROGRAM IS USED FROM ┬┴╙╔├ WITH A COMMAND OF THE
  11.  ; FOLLOWING FORM
  12.  ;
  13.  ;     SYSAD,VN,TY$
  14.  ;
  15.  ;   WHERE:
  16.  ;         AD   IS THE ENTRANCE ADDRESS. ╘HIS IS THE SAME AS
  17.  ;              THE PROGRAM'S LOAD ADDRESS. ╘HE TERM "AD" MAY BE
  18.  ;              BE A CONSTANT OR A VARIABLE.
  19.  ;
  20.  ;         VN   IS THE NAME OF THE STRING VARIABLE INTO WHICH THE
  21.  ;              SELECTED FILENAME IS TO BE PLACED FOR USE BY THE
  22.  ;              ┬┴╙╔├ PROGRAM THAT CALLS IT. ╬OTE THAT THE "$" IS
  23.  ;              NOT USED HERE.
  24.  ;
  25.  ;        TY$   IS THE NAME OF A STRING THAT CONTAINS THE TYPE OF FILE
  26.  ;              TO BE DISPLAYED. ╘HE STRING NAME CAN BE ONE OR TWO 
  27.  ;              CHARACTERS. ╘HE FOLLOWING CAN BE USED ON 1541 AND 1571
  28.  ;              DRIVES. ╘HIS LIST IS NOT EXHAUSTIVE, AND SOME OTHERS WILL
  29.  ;              WORK ON ├═─ HARD DRIVES. ╘HE '$' IS USED HERE. ╧NLY THE 
  30.  ;              FIRST BYTE OF THE STRING IS USED.
  31.  ;
  32.  ;
  33.  ;                     S   FOR ╙┼╤UENTIAL FILES
  34.  ;                     P   FOR ╨╥O╟RAM FILES
  35.  ;                     U   FOR ╒╙E╥ FILES
  36.  ;                     R   FOR ╥┼╠ATIVE FILES
  37.  ;                     A   FOR ┴LL FILES
  38.  ;                     C   FOR ├┬═ (PARTITION) ENTRIES
  39.  ;
  40.  ;              ╔F THE TYPE STRING NAMED HERE HAS NOT BEEN DEFINED, OR
  41.  ;              IT IS A NULL STRING (LENGTH ZERO) AN ╔╠╠┼╟┴╠ ╤╒┴╬╘╔╘┘
  42.  ;              ERROR WILL BE THE RESULT.
  43.  ;
  44.  ;
  45.  ;-------------------------------------------------------------------------
  46.  ;BY R.W. (BOB K7) KOBER
  47.  ;      FOR MILADY
  48.  ;    JULY 19, 1986
  49.  ;
  50.  ; MODIFIED BY KURT BRANDON
  51.  ; AS FOLLOWS
  52.  ;
  53.  ; 24 ╞EBRUARY 1990 MODIFIED FOR RELOCATABILITY
  54.  ; 19 ╧CTOBER  1990 MODIFIED TO PREVENT FILE SIZES WITH MORE THAN THREE
  55.  ;                  DIGITS FROM DISTURBING THE REVERSE FIELD OF THE 
  56.  ;                  FILENAME
  57.  ; 13 ─ECEMBER 1992 MODIFIED TO BE ABLE TO SEND DISK COMMANDS
  58.  ;  2 ╩ANUARY  1993 MODIFIED TO GET THE FILETYPE FROM A STRING VARIABLE
  59.  ; 
  60.  ;*=$C000 ;DEC 49152
  61.  ;.OBJ "@:ULTRADIR.ML"
  62.  ;
  63.  ;--- EQUATES ---
  64.  ;
  65.  BDRCOL  = $D020 ;  BORDER COLOR
  66.  BEGSTR  = $33   ;  POINTER TO BEGINNING OF STRING POOL
  67.  BGCOLO  = $D021 ;  BACKGROUND COLOR
  68.  CHKCOM  = $AEFD ;  CHECK FOR COMMA
  69.  CHKIN   = $FFC6 ;  SET CHANNEL FOR INPUT
  70.  CHKOUT  = $FFC9 ;  SET CHANNEL FOR OUTPUT
  71.  CHRGET  = $0073 ;  GET BASIC BYTE
  72.  CHRIN   = $FFCF ;  INPUT A CHARACTER
  73.  CHROUT  = $FFD2 ;  OUTPUT A CHARACTER
  74.  CLOSE   = $FFC3 ;  CLOSE FILE
  75.  CLRCHN  = $FFCC ;  CLEAR I/O CHANNELS
  76.  CLRLINE = $E9FF ;  CLEAR SCREEN LINE
  77.  CLRSCN  = $E544 ;  BASIC'S CLR/HOME
  78.  COLOR   = $0286 ;  CHARACTER COLOR
  79.  CRSR'ON = $CC   ;  0=CURSOR ON   <>0=CURSOR OFF
  80.  CRSR'RV = $CF   ;  1=CURSOR IN REVERSE PHASE  0=NOT
  81.  CURCOL  = $D3   ;  CURSOR COLUMN
  82.  CURLIN  = $D6   ;  CURRENT CURSOR LINE
  83.  DESCADD = $47   ;  DESCRIPTOR ADDRESS
  84.  DEVNUM  = $BA   ;  DEVICE NUMBER
  85.  ERRMSG  = $A437 ;  ERROR MESSAGE GENERATOR
  86.  FINDVAR = $AF28 ;  FIND VARIABLE AND GET ITS VALUE
  87.  GETIN   = $FFE4 ;  GET A BYTE FROM THE KEYBOARD
  88.  HOME    = $E566 ;  HOME THE CRSR
  89.  KEYCNT  = $C6   ;  NUMBER OF BYTES IN KEYBOARD BUFFER
  90.  LINADD  = $D1   ;  CURRENT-LINE ADDRESS
  91.  LINPRT  = $BDCD ;  OUTPUT A NUMBER
  92.  MAKDES  = $B0E7 ;  SET UP A DESCRIPTOR
  93.  MATRIX  = $CB   ;  KEYPRESS MATRIX
  94.  MOVSTR  = $B688 ;  COPY STRING TO POOL
  95.  OPEN    = $FFC0 ;  OPEN A FILE
  96.  PLOT    = $FFF0 ;  SET CRSR POSITION
  97.  RETURN  = $A3B7 ;  ROM RTS COMMAND
  98.  SETLFS  = $FFBA ;  SET LOGICAL FILE NUMBER
  99.  SETNAM  = $FFBD ;  SET FILE NAME
  100.  SETPTR  = $B4F4 ;  SET STRING POOL POINTER
  101.  SHFLG   = $028D ;  SHIFT FLAG
  102.  STACK   = $0100 ;  STACK START ADDRESS
  103.  STATUS  = $90   ;  I/O STATUS BYTE
  104.  VARNAME = $45   ;  NAME FOR ASSIGNMENT
  105.  :
  106.  :
  107.  :
  108.  WRKSPC  = $0200      ; PROGRAM WORK SPACE
  109.  FILNAME = WRKSPC     ; FILENAME SELECTED
  110.  TYPE    = WRKSPC+$1A ; FILE TYPE BYTE
  111.  DMSK    = WRKSPC+$15 ; DIRECTORY MASK
  112.  VARS    = WRKSPC+$1B ;
  113.  FIRSTQ  = VARS       ; FILENAME QUOTE FLAG
  114.  CHRSTOR = VARS+1     ; INTERMEDIATE STORAGE FOR BYTE BEING TRANSLATED
  115.  DIREND  = VARS+2     ; END-OF-DIRECTORY FLAG
  116.  NOLINE  = VARS+3     ; DIRECTORY LINE COUNTER
  117.  UPFLG   = VARS+4     ; FLAG, CURSOR UP
  118.  NAMLEN  = VARS+5     ; FILENAME LENGTH
  119.  SUPBLN  = VARS+6     ; FLAG FOR SUPRESSION OF BLANKS
  120.  YSTOR   = VARS+7     ; .┘ REGISTER STORAGE
  121.  RTYPE   = VARS+8     ; FILETYPE SELECTED
  122.  MENUFLG = VARS+9     ; FLAG FOR MENU
  123.  MODE    = VARS+$A    ; USED TO CONTROL THE USAGE OF THE SCREEN-CODE
  124.                       ; TO PETASCII SUBROUTINE
  125.  LINLEN  = VARS+$B    ; LENGTH OF DISK-COMMAND LINE
  126.  CURPOS  = VARS+$C    ; POSITION OF CURSOR ON DISK-COMMAND LINE
  127.  CBYTE   = VARS+$D    ; CONTROL BYTE FOR INCREMENTING LENGTH OF DISK
  128.                       ; COMMAND LINE
  129.  RNAME1  = VARS+$E    ; FIRST BYTE OF RETURNED FILENAME
  130.  RNAME2  = VARS+$F    ; SECOND  "   "     "       "      
  131.  JTAB    = WRKSPC+$30 ; JUMP TABLE START ADDRESS
  132.  ;
  133.  ;
  134.  ; USAGE OF ┬┴╙╔├'S INPUT BUFFER
  135.  ;
  136.  ;ADDRESS    USAGE
  137.  ;
  138.  ;512-527    FILENAME RETURNED
  139.  ;533-537    DIRECTORY MASK PATTERN
  140.  ;538        FILE TYPE BYTE
  141.  ;539        QUOTE FLAG
  142.  ;540        INTERMEDIATE STORAGE FOR SCREEN-CODE-TO-PETASCII CONVERSION
  143.  ;541        END-OF-DIRECTORY FLAG
  144.  ;542        NOLINE FLAG
  145.  ;543        CURSOR-UP FLAG
  146.  ;544        LENGTH OF SELECTED FILENAME
  147.  ;545        FLAG FOR SUPPRESSION OF BLANKS BETWEEN SIZE AND NAME FIELDS
  148.  ;546        TEMPORARY STORAGE FOR .┘
  149.  ;547        TYPE OF FILE SELECTED (╙,╨,╒,╥)
  150.  ;548        MENUFLG
  151.  ;549        MODE BYTE USED TO CONTROL THE WAY THE SCREEN-CODE-TO-PETASCII 
  152.  ;           TRANSLATE CODE IS USED (FILENAME VS. DISK COMMAND)
  153.  ;550        HOLDS LENGTH OF DISK-COMMAND LINE
  154.  ;551        HOLDS POSITION OF CURSOR ON DISK-COMMAND LINE
  155.  ;552-553    NAME OF VARIABLE FOR SELECTED FILENAME
  156.  ;554-559    NOT USED
  157.  ;560-597    JUMP TABLE
  158.  ;
  159.  ; --- RELOCATING JUMP TABLE ---
  160.  ;
  161.  BADSTAT.I  = JTAB
  162.  TITLES.I   = JTAB+$2
  163.  CRSRUP.I   = JTAB+$4
  164.  CRSRDN.I   = JTAB+$6
  165.  NAME1.I    = JTAB+$8
  166.  MENU1.I    = JTAB+$A
  167.  DOOVER.I   = JTAB+$C
  168.  SETCSR.I   = JTAB+$E
  169.  RVSON.I    = JTAB+$10
  170.  END.I      = JTAB+$12
  171.  INIT.I     = JTAB+$14
  172.  MESS1.I    = JTAB+$16
  173.  DSK'CMND.I = JTAB+$18
  174.  PAUSE.I    = JTAB+$1A
  175.  GETKEY.I   = JTAB+$1C
  176.  OUTPUT.I   = JTAB+$1E
  177.  LOOP3.I    = JTAB+$20
  178.  START2.I   = JTAB+$22
  179.  TRANS.I    = JTAB+$24
  180.  ;
  181.  ;--- PROGRAM STARTS HERE ---
  182.  ;
  183.               LDY #88                   ;  CLEAR THE WORKSPACE
  184.               LDA #0
  185.        CLRBUF STA WRKSPC,Y
  186.               DEY
  187.               BNE CLRBUF
  188.  ;
  189.  ;
  190.  ; GET THE PARAMETER LIST FROM THE BASIC TEXT
  191.               LDA #$80
  192.               STA RNAME2    
  193.               JSR CHKCOM               ;  GET RETURN VARIABLE
  194.               STA RNAME1 
  195.               JSR CHRGET               ;  ANOTHER LETTER (QM)
  196.               CMP #$2C                 ;  IF ITS A COMMA, THE
  197.               BEQ +                    ;  SECOND BYTE IS ZERO
  198.               ORA #$80                 ;  SET HI-BIT TO INDICATE STRING
  199.               STA RNAME2               ;  STORE BYTE 2
  200.               JSR CHRGET
  201.             + JSR CHKCOM               ;  LOOK FOR A COMMA
  202.               JSR FINDVAR              ;  GET VARIABLE NAME, FIND DESCRIPTOR
  203.               BCS ERR14                ;  CARRY IS SET IF VARIABLE NOT FOUND
  204.               LDY #0
  205.               LDA (DESCADD),Y          ;  ADDRESS IS FOR STRING LENGTH BYTE
  206.               BEQ ERR14                ;  ZERO IS AN ILLEGAL LENGTH
  207.               INY
  208.               LDA (DESCADD),Y
  209.               STA $FE
  210.               INY
  211.               LDA (DESCADD),Y
  212.               STA $FF
  213.               LDY #0
  214.               LDA ($FE),Y
  215.               BNE STORIT
  216.        ERR14  LDX #14                  ;  ╔╠╠┼╟┴╠ ╤╒┴╬╘╔╘┘ ERROR CODE
  217.               .BYTE $2C
  218.        ERR11  LDX #11                  ;  ╙┘╬╘┴╪ ERROR CODE
  219.               JMP ERRMSG               ;  GIVE 'EM THE GOOD NEWS!
  220.        STORIT STA TYPE                 ;  STORE TYPE BYTE
  221.  ;
  222.  ;
  223.  ;JUMP TABLE CONSTRUCTION
  224.  ;
  225.               SEI                      ;  DISABLE INTERRUPTS
  226.               JSR RETURN               ;  RETURN ADDRESS ON STACK
  227.         START TSX                      ;  GET STACK POINTER
  228.               LDA STACK,X              ;  GET HI-BYTE
  229.               STA $FF
  230.               DEX
  231.               LDA STACK,X              ;  GET LO-BYTE
  232.               STA $FE
  233.               INC $FE
  234.               BNE +
  235.               INC $FF
  236. ;
  237.  ;ADDRESS OF LABEL "START" IS NOW AT $FE, $FF
  238.             + LDY #TABLE-START-1
  239.         CLOOP INY
  240.               LDA ($FE),Y              ;  GET LO-BYTE OF FIRST LABEL OFFSET
  241.               CLC
  242.               ADC $FE                  ;  ADD START ADDRESS
  243.               STA !START-TABLE+JTAB,Y  ;  STORE LO-BYTE JUMP ADDRESS
  244.               INY                      ; 
  245.               LDA ($FE),Y              ;  [
  246.               ADC $FF                  ;  [ DO THE SAME FOR THE HI-BYTE
  247.               STA !START-TABLE+JTAB,Y  ;  [
  248.               CPY #TBLEND-START
  249.               BCC CLOOP
  250.               LDY #TBLEND-TABLE-16     ;  [
  251.               LDA JTAB,Y               ;  [
  252.               STA $FC                  ;  [  STORE THE ADDRESS OF THE
  253.               INY                      ;  [  SCREEN TEXT AT $FC AND $FD
  254.               LDA JTAB,Y               ;  [
  255.               STA $FD                  ;  [
  256.               CLI
  257.               SEC:BCS TBLEND
  258.  ;
  259.  ;TABLE OF OFFSETS FROM "START"
  260.         TABLE .WORD BADSTAT-START      ;  BADSTAT OFFSET
  261.               .WORD TITLES-START       ;  TITLES OFFSET
  262.               .WORD CRSRUP-START       ;  CRSRUP OFFSET
  263.               .WORD CRSRDN-START       ;  CRSRDN OFFSET
  264.               .WORD NAME1-START        ;  NAME1 OFFSET
  265.               .WORD MENU1-START        ;  MENU1 OFFSET
  266.               .WORD DOOVER-START       ;  DOOVER OFFSET
  267.               .WORD SETCSR-START       ;  SETCSR OFFSET
  268.               .WORD RVSON-START        ;  RVSON OFFSET
  269.               .WORD END-START          ;  END OFFSET
  270.               .WORD INIT-START         ;  INIT OFFSET
  271.               .WORD MESS1-START        ;  MESS1 OFFSET
  272.               .WORD DSK'CMND-START     ;  DSK'CMND OFFSET
  273.               .WORD PAUSE-START        ;  PAUSE OFFSET
  274.               .WORD GETKEY-START       ;  GETKEY OFFSET
  275.               .WORD OUTPUT-START       ;  OUTPUT OFFSET
  276.               .WORD LOOP3-START        ;  LOOP3 OFFSET
  277.               .WORD START2-START       ;  START2 OFFSET
  278.               .WORD TRANS-START        ;  TRANS OFFSET
  279.  ;
  280.  
  281.